// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_GFX_PLATFORM_FONT_IOS_H_
#define UI_GFX_PLATFORM_FONT_IOS_H_

#include "base/macros.h"
#include "ui/gfx/platform_font.h"

namespace gfx {

class PlatformFontIOS : public PlatformFont {
public:
    PlatformFontIOS();
    explicit PlatformFontIOS(NativeFont native_font);
    PlatformFontIOS(const std::string& font_name,
        int font_size);

    // Overridden from PlatformFont:
    Font DeriveFont(int size_delta, int style) const override;
    int GetHeight() override;
    int GetBaseline() override;
    int GetCapHeight() override;
    int GetExpectedTextWidth(int length) override;
    int GetStyle() const override;
    const std::string& GetFontName() const override;
    std::string GetActualFontNameForTesting() const override;
    int GetFontSize() const override;
    const FontRenderParams& GetFontRenderParams() override;
    NativeFont GetNativeFont() const override;

private:
    PlatformFontIOS(const std::string& font_name, int font_size, int style);
    ~PlatformFontIOS() override { }

    // Initialize the object with the specified parameters.
    void InitWithNameSizeAndStyle(const std::string& font_name,
        int font_size,
        int style);

    // Calculate and cache the font metrics.
    void CalculateMetrics();

    std::string font_name_;
    int font_size_;
    int style_;

    // Cached metrics, generated at construction.
    int height_;
    int ascent_;
    int cap_height_;
    int average_width_;

    DISALLOW_COPY_AND_ASSIGN(PlatformFontIOS);
};

} // namespace gfx

#endif // UI_GFX_PLATFORM_FONT_IOS_H_
